<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 17. トラブルシューティング</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="appendixes.html" title="Part IV. 付録">
<link rel="prev" href="appendixes.html" title="Part IV. 付録">
<link rel="next" href="tips.html" title="Chapter 18. ヒント &amp; 裏ワザ">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 17. トラブルシューティング</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<th width="60%" align="center">Part IV. 付録</th>
<td width="20%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 17. トラブルシューティング">
<div class="titlepage"><div><div><h2 class="title">
<a name="troubleshooting"></a>Chapter 17. トラブルシューティング</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl><dt><span class="sect1"><a href="troubleshooting.html#smarty.php.errors">Smarty/PHP エラー</a></span></dt></dl>
</div>
<p></p>
<div class="sect1" title="Smarty/PHP エラー">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="smarty.php.errors"></a>Smarty/PHP エラー</h2></div></div></div>
<p>
    Smarty は、タグの属性が不足していたり、誤った変数名を指定していた時など、
    多くのエラーをキャッチする事ができます。
    キャッチすると次の例のようなエラーが表示されます。
   </p>
<div class="example">
<a name="id2865154"></a><p class="title"><b>Example 17.1. Smarty エラー</b></p>
<div class="example-contents"><pre class="screen">

Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
       in /path/to/smarty/Smarty.class.php on line 1041

Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
       in /path/to/smarty/Smarty.class.php on line 1041

    </pre></div>
</div>
<br class="example-break"><p>
    Smarty はテンプレート名・エラー行番号・エラー内容を示します。
    その次のエラーは、Smarty クラスにおいてエラーが発生した実際の行番号から成るメッセージです。
   </p>
<p>
    タグの閉じ忘れのような、Smarty がキャッチできないエラーがあります。
    通常、このような場合のエラーは PHP コンパイル時にパースエラーで終了します。 
   </p>
<div class="example">
<a name="id2865240"></a><p class="title"><b>Example 17.2. PHP パースエラー</b></p>
<div class="example-contents"><pre class="screen">

Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75

    </pre></div>
</div>
<br class="example-break"><p>
    PHP パースエラーの場合のエラー行番号は、
    テンプレートそのものではなくコンパイルされた PHP スクリプトに一致します。
    通常、テンプレートを見ることで構文エラーを見つけられます。
    一般的な間違いとしては、
    <a class="link" href="language.function.if.html" title="{if},{elseif},{else}"><code class="varname">{if}{/if}</code></a> や
    <a class="link" href="language.function.if.html" title="{if},{elseif},{else}"><code class="varname">{section}{/section}</code>
    </a> タグの閉じ忘れ、<code class="varname">{if}</code>
    タグ内のロジックの構文の誤りなどがあります。もしエラーが見つけられない場合は、
    テンプレートのどこに該当するエラーがあるかを見い出すために、
    コンパイルされた PHP ファイルを開いて行番号のあたりを調べる必要があります。
   </p>
<div class="example">
<a name="id2865869"></a><p class="title"><b>Example 17.3. その他共通のエラー</b></p>
<div class="example-contents">
<pre class="screen">

Warning: Smarty error: unable to read resource: "index.tpl" in...
or
Warning: Smarty error: unable to read resource: "site.conf" in...

</pre>
<p>
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
      <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir">
      <em class="parameter"><code>$template_dir</code></em></a>
      が存在しない不正なディレクトリか、もしくは存在しても
      <code class="filename">index.tpl</code> が
      <code class="filename">templates/</code>
      ディレクトリ内にありません。
      </p></li>
<li class="listitem"><p>
        <a class="link" href="language.function.config.load.html" title="{config_load}">
        <code class="varname">{config_load}</code></a>
        関数がテンプレート内にあり (もしくは
        <a class="link" href="api.config.load.html" title="config_load()"><code class="varname">config_load()</code></a>
        で呼び出されており)、その際の
        <a class="link" href="variable.config.dir.html" title="$config_dir"><em class="parameter"><code>$config_dir</code></em>
        </a> が存在しない不正なディレクトリか、もしくは存在しても
        <code class="filename">site.conf</code> がそのディレクトリ内にありません。
        </p></li>
</ul></div>
<p>
    </p>
<pre class="screen">

Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...

    </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
    <a class="link" href="variable.compile.dir.html" title="$compile_dir">
    <em class="parameter"><code>$compile_dir</code></em></a>
    に不正な値が入っており、そのようなディレクトリが存在しないか、もしくは
    <code class="filename">templates_c</code> の指定がディレクトリではなくファイルです。
    </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: unable to write to $compile_dir '....

    </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
    <a class="link" href="variable.compile.dir.html" title="$compile_dir">
   <em class="parameter"><code>$compile_dir</code></em></a> に Web サーバによる書き込み権限がありません。
    <a class="link" href="installing.smarty.basic.html" title="基本的なインストール">Smarty のインストール</a>
    のページ下部のパーミッションの項を参照してください。
    </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /..

    </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
    <a class="link" href="variable.caching.html" title="$caching">
    <em class="parameter"><code>$caching</code></em></a> が有効であるにも関わらず、
    <a class="link" href="variable.cache.dir.html" title="$cache_dir"><em class="parameter"><code>$cache_dir</code></em></a>
    が存在しない不正なディレクトリか、もしくは存在しても
    <code class="filename">cache/</code> がディレクトリではなくファイルである、という意味です。
    </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: unable to write to $cache_dir '/...

    </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
    <a class="link" href="variable.caching.html" title="$caching"><em class="parameter"><code>$caching</code></em></a>
    が有効であるにも関わらず、<a class="link" href="variable.cache.dir.html" title="$cache_dir">
    <em class="parameter"><code>$cache_dir</code></em></a>
    に Web サーバによる書き込み権限がない、という意味です。
    <a class="link" href="installing.smarty.basic.html" title="基本的なインストール">Smarty のインストール</a>
    のページ下部のパーミッションの項を参照してください。
    </p></li></ul></div>
</div>
</div>
<br class="example-break"><p>
   <a class="link" href="chapter.debugging.console.html" title="Chapter 10. デバッギングコンソール">デバッグ</a>、
   <a class="link" href="variable.error.reporting.html" title="$error_reporting">
   <em class="parameter"><code>$error_reporting</code></em></a>
   および
   <a class="link" href="api.trigger.error.html" title="trigger_error()"><code class="varname">trigger_error()</code></a>
   の項も参照してください。
   </p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="appendixes.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Part IV. 付録 </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> Chapter 18. ヒント &amp; 裏ワザ</td>
</tr>
</table>
</div>
</body>
</html>
